<?php

class ContaController extends TMetroUI {

    private $logic;

    public function __construct() {
        parent::__construct();
        $this->logic = new ContaLogic();
    }

    public function index() {
        $this->REDIRECT->goToAction('listar');
    }

    public function listar() {

        # Toolbar
        $this->addDados('toolbar', TWin8Helper::displayToolBar(array("novo")));

        # Paginacao
        $tRegistro = $this->logic->totalRegistro();
        if (!$this->isParam('page')) {
            $paginacao = new TPaginacaoHelper($tRegistro);
        } else {
            $paginacao = new TPaginacaoHelper($tRegistro, $this->getParam('page'));
        }
        unset($tRegistro);
        
        $this->addDados('paginacao', $paginacao->getPaginacao());
        # lista de contas
        $exceptionConta['load'] = array('usuarioCriador' => false);
        $arrayObjConta = $this->logic->listar(
                                            null,
                                            "nome", 
                                            true,
                                            $exceptionConta,
                                            $paginacao->getInicio()
                                        );

        # Limpar memoria
        unset($exceptionConta);
        unset($paginacao);
        
        $this->addDados('listConta', $arrayObjConta);
        unset($arrayObjConta);
        
        # Exibir view
        $this->TPageSecondary('lista');
    }

    public function cadastrar() {

        $this->HTML->addCss(PATH_DIR_TEMPLATE_URL . 'ext/select2/select2.css');
        $this->HTML->addJavaScript(PATH_DIR_TEMPLATE_URL . 'ext/select2/select2.js');
        
        $this->HTML->addJavaScript(PATH_JS_CORE_URL . 'jquery.validate.js');
        $this->HTML->addJavaScript(PATH_JS_CORE_URL . 'jquery.mask.min.js');
        $this->HTML->addJavaScript(PATH_JS_CORE_URL . 'core.min.js');
        
        # Lista de pisos
        $objPisoLogic = new PisoLogic();
        $exceptionPiso['load'] = array('descricao' => false,'status' => false);
        $listObjPiso = $objPisoLogic->listar(null, 'codigo', null, $exceptionPiso);
        unset($exceptionPiso);
        $this->addDados('listObjPiso', TFormHelper::optionSelect($listObjPiso,'codigo'));
        unset($listObjPiso);
        unset($objPisoLogic);
        
        $this->HTML->addJavaScript(PATH_JS_URL . $this->_controller . '/' . $this->_action . '.js');

        $this->TPageSecondary('cadastro');
    }

    public function inserir() {

        if ($_SERVER['REQUEST_METHOD'] == "POST") {

            $objConta = new Conta();
            $objConta->setPisoEntidade($_POST['pisoEntidade']);
            $objConta->setAgencia($_POST['agencia']);
            $objConta->setNumeroConta(($_POST['status'] === 'A') ? $_POST['numeroConta'] : null);
            $objConta->setNome($_POST['nome']);
            $objConta->setObservacao($_POST['observacao']);
            $objConta->setStatus($_POST['status']);
            $objConta->setLocked(($_POST['status'] === 'D') ? 'A' : 'D');
            $objConta->setUsuarioCriador($this->SECURITY->getUsuario()->getId());
            $objConta->setDataCriacao(time());
            
            $salvar = $this->logic->salvar($objConta);
            unset($objConta);

            if (!$salvar[0]) {
                # Rertornar erro
                TFeedbackHelper::notifyError('Ocorreu um error no cadastro, tente novamente ou entre em contato com o administrador.');
                $this->REDIRECT->goToAction('cadastrar');
            }else{
                TFeedbackHelper::notifySuccess('Conta cadastrada com sucesso.');
                $this->REDIRECT->setUrlParameter('id', $salvar[1]->getId());
                $this->REDIRECT->goToAction('informar');
            }

        } else {
            $this->REDIRECT->goToAction("listar");
        }
    }

    public function informar() {

        if ($this->isParam('id')) {
            
            # Toolbar
            $this->addDados('toolbar', '');
            $objConta = $this->logic->obterPorId($this->getParam('id'), true);
            $this->addDados("objConta", $objConta);
            unset($objConta);
            $this->TPageSecondary('informa');
            
        } else {
            $this->REDIRECT->goToAction("listar");
        }
    }

}

?>